package edu.fasta.sisinfo2.builders;

import java.util.ArrayList;
import java.util.List;

import edu.fasta.sisinfo2.juegos.Juego;
import edu.fasta.sisinfo2.juegos.Poker;
import edu.fasta.sisinfo2.poker.Carta;
import edu.fasta.sisinfo2.poker.Mano;

public class PokerBuilder implements BuilderJuegos {
	
	private BuilderJuegos builderSiguiente;
	
	public PokerBuilder(BuilderJuegos builderSiguiente){     
		this.setBuilderSiguiente(builderSiguiente);
	}

	public Juego buildJuego(Mano mano) {
		
		List listaDeManos = new ArrayList();
		listaDeManos = mano.combinatoria(); //le paso una mano de siete cartas y me da las combinatorias posibles
		List manoActual = new ArrayList();
		int primeraCarta, contador;
		
		for(int i=0; i<listaDeManos.size(); i++){ //recorro todas las manos posibles (21)
			manoActual = (List) listaDeManos.get(i);
			primeraCarta = ((Carta) manoActual.get(0)).getPuntaje();
			contador = 1;
						
			for(int j=1 ; j < manoActual.size() ; j++){
				if (((Carta) manoActual.get(j)).getPuntaje() == primeraCarta) {
					contador++;
				}				
			}
			
			if(contador == 4){
				return new Poker((Carta)manoActual.get(0), (Carta)manoActual.get(1), (Carta)manoActual.get(2), (Carta)manoActual.get(3));
			}			
		}
		return this.getBuilderSiguiente().buildJuego(mano);
	}

	public BuilderJuegos getBuilderSiguiente() {
		return builderSiguiente;
	}

	public void setBuilderSiguiente(BuilderJuegos builderSiguiente) {
		this.builderSiguiente = builderSiguiente;
	}

	
}
